home *** CD-ROM | disk | FTP | other *** search
-
- {
- Q: How can I make a form move by clicking and dragging in the client area
- instead of on the caption bar?
-
- A: The easiest way to do this is to "fool" Windows into thinking that
- you're actually clicking on the caption bar of a form. Do this by
- handling the wm_NCHitTest windows message as shown in the sample unit
- below.
-
- TIP: If you want a captioness borderless window similar to a floating
- toolbar, set the Form's Caption to an empty string, disable all of the
-
- BorderIcons, and set the BorderStyle to bsNone.
- }
-
- unit Dragmain;
-
- interface
-
- uses
- SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
- Forms, Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
-
- begin
- inherited; { call the inherited message handler }
- if M.Result = htClient then { is the click in the client area? }
- M.Result := htCaption; { if so, make Windows think it's }
- { on the caption bar. }
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- Close;
- end;
-
- end.
-
- { The text representation of the .DFM file is below:
-
- object Form1: TForm1
- Left = 203
-
- Top = 94
- BorderIcons = []
- BorderStyle = bsNone
- ClientHeight = 273
- ClientWidth = 427
- Font.Color = clWindowText
- Font.Height = -13
- Font.Name = 'System'
- Font.Style = []
- PixelsPerInch = 96
- TextHeight = 16
- object Button1: TButton
- Left = 160
- Top = 104
- Width = 89
- Height = 33
- Caption = 'Close'
- TabOrder = 0
- OnClick = Button1Click
- end
- end
-
- }
-
-